
// 云函数入口文件
const cloud = require('wx-server-sdk')
const tencentcloud = require("tencentcloud-sdk-nodejs")

// 初始化云环境
try {
  cloud.init({ 
    env: cloud.DYNAMIC_CURRENT_ENV || 'ceshh-4gr1i2ad5d1ca6d1' // 使用动态环境ID或默认值
  })
  console.log('云环境初始化成功')
} catch (error) {
  console.error('云环境初始化失败:', error)
}

// 导入腾讯云人脸识别客户端
const IaiClient = tencentcloud.iai.v20200303.Client

// 创建人脸识别客户端实例
const client = new IaiClient({
    credential: {
        secretId: process.env.TENCENTCLOUD_SECRETID,
        secretKey: process.env.TENCENTCLOUD_SECRETKEY,
    },
    region: "ap-guangzhou",
    profile: {
        httpProfile: {
            endpoint: "iai.tencentcloudapi.com",
        },
    },
})

// 云函数入口函数
exports.main = async (event, context) => {
    try {
        const { fileID } = event

        if (!fileID) {
            return {
                code: -1,
                message: '未接收到图片'
            }
        }

        // 下载云存储中的图片
        const res = await cloud.downloadFile({
            fileID: fileID,
        })
        const buffer = res.fileContent

        // 将图片转为base64
        const base64Image = buffer.toString('base64')

        // 调用腾讯云人脸检测与分析API
        const result = await client.DetectFace({
            Image: base64Image,
            NeedFaceAttributes: 1, // 返回人脸属性信息
            MaxFaceNum: 1 // 最多处理的人脸数目
        })

        // 删除云存储中的临时图片
        await cloud.deleteFile({
            fileList: [fileID]
        })

        // 如果没有检测到人脸
        if (!result.FaceInfos || result.FaceInfos.length === 0) {
            return {
                code: -1,
                message: '未检测到人脸，请确保图片中有清晰的人脸'
            }
        }

        // 获取人脸属性信息
        const faceAttributes = result.FaceInfos[0].FaceAttributesInfo

        return {
            code: 0,
            message: 'success',
            data: {
                Age: faceAttributes.Age, // 年龄
                Gender: faceAttributes.Gender, // 性别
                Beauty: faceAttributes.Beauty, // 颜值
                FaceShape: faceAttributes.FaceShape, // 脸型
                Mouth: {
                    MouthOpen: faceAttributes.Mouth.MouthOpen // 嘴巴张开程度
                },
                Eye: {
                    EyeOpen: faceAttributes.Eye.EyeOpen, // 眼睛睁开程度
                    EyeSize: faceAttributes.Eye.EyeSize // 眼睛大小
                },
                Eyebrow: {
                    EyebrowDensity: faceAttributes.Eyebrow.EyebrowDensity, // 眉毛浓密程度
                    EyebrowCurve: faceAttributes.Eyebrow.EyebrowCurve // 眉毛弯曲程度
                },
                Nose: {
                    NoseSize: faceAttributes.Nose.NoseSize // 鼻子大小
                },
                Skin: {
                    SkinDarkness: faceAttributes.Skin.SkinDarkness, // 肤色
                    SkinHealthy: faceAttributes.Skin.SkinHealthy // 肤色健康程度
                },
                Hair: {
                    Length: faceAttributes.Hair.Length, // 头发长度
                    Bang: faceAttributes.Hair.Bang, // 刘海
                    Color: faceAttributes.Hair.Color // 头发颜色
                },
                Hat: faceAttributes.Hat, // 帽子
                HeadPose: {
                    Pitch: faceAttributes.HeadPose.Pitch, // 俯仰角
                    Yaw: faceAttributes.HeadPose.Yaw, // 偏航角
                    Roll: faceAttributes.HeadPose.Roll // 翻滚角
                },
                Mask: faceAttributes.Mask, // 口罩
                Moustache: faceAttributes.Moustache, // 胡子
                Emotion: faceAttributes.Emotion, // 情绪
                Smile: faceAttributes.Smile // 微笑
            }
        }

    } catch (error) {
        return {
            code: -1,
            message: error.message || '分析失败',
            error: error
        }
    }
}